package com.hrzyit.base.ui.activity

import android.os.Bundle
import android.view.View
import android.widget.FrameLayout
import com.hrzyit.base.common.AppManager
import com.trello.rxlifecycle2.components.support.RxAppCompatActivity
import org.jetbrains.anko.find

/**
 * Activity 基础类，所有子 Activity 均继承此类
 * @author YangWei
 * @date 2019/3/5
 */
open class BaseActivity : RxAppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        // 将 Activity 加入到 Activity 管理器
        AppManager.instance.addActivity(this)
    }

    override fun onDestroy() {
        super.onDestroy()

        // 将 Activity 从 Activity 管理器中移除
        AppManager.instance.finishActivity(this)
    }

    //获取Window中视图content
    val contentView: View
        get() {
            val content = find<FrameLayout>(android.R.id.content)
            return content.getChildAt(0)
        }


//    // 电话号码
//    private lateinit var phoneNumber: String
//
//    /**
//     * 拨打电话
//     * @param   phoneNumber 电话号码
//     */
//    protected fun startCallPhone(phoneNumber: String) {
//        this.phoneNumber = phoneNumber
//
//
//        val checkCallPhonePermission = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)
//        when (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//            true -> {
//                // Android SDK >= 23
//                if (checkCallPhonePermission == PackageManager.PERMISSION_GRANTED) {
//                    // 已授权直接拨打电话
//                    callPhone(phoneNumber)
//                } else {
//                    // 直接请求授权，动态授权后执行回调：onRequestPermissionsResult
//                    ActivityCompat.requestPermissions(
//                        this, arrayOf(Manifest.permission.CALL_PHONE),
//                        REQUEST_CALL_PERMISSION
//                    )
//                    return
//                }
//            }
//            false -> {
//                if (checkCallPhonePermission == PackageManager.PERMISSION_GRANTED) {
//                    // 已授权直接拨打电话
//                    callPhone(phoneNumber)
//                } else {
//                    // 未授权，申请授权
//                    if (ActivityCompat.shouldShowRequestPermissionRationale(
//                            this as Activity,
//                            Manifest.permission.CALL_PHONE
//                        )
//                    ) {
//
//                        toast("拨打电话需要授权，请授权")
//
//                        val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
//                        val uri = Uri.fromParts("package", packageName, null)
//                        intent.data = uri
//                        startActivity(intent)
//                    } else {
//                        // 直接请求授权，动态授权后执行回调：onRequestPermissionsResult
//                        ActivityCompat.requestPermissions(
//                            this, arrayOf(Manifest.permission.CALL_PHONE),
//                            REQUEST_CALL_PERMISSION
//                        )
//                    }
//                }
//            }
//        }
//
//    }
//
//    /**
//     * 拨打电话界面
//     */
//    private fun callPhone(phoneNumber: String) {
//        val uri = Uri.parse("tel:$phoneNumber")
//        // 打开拨号界面，填充输入手机号码，让用户自主的选择:ACTION_DIAL
//        // 直接拨打电话
//        val intent = Intent(Intent.ACTION_CALL, uri)
//        intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
//        try {
//            startActivity(intent)
//        } catch (se: SecurityException) {
//            Log.e("Question for permission", "拨打电话未授权")
//        }
//    }
//
//    /**
//     * 判断是否有某项权限
//     * @param   permission    权限
//     * @param   requestCode     请求码
//     * @return  boolean
//     */
////    fun checkReadPermission(permission: String, requestCode: Int): Boolean {
////        var flag = false
////        when (PackageManager.PERMISSION_GRANTED) {
////            ContextCompat.checkSelfPermission(this, permission) -> {
////                flag = true
////            }
////            else -> {
////                // 申请权限
////                ActivityCompat.requestPermissions(this, arrayOf(permission), requestCode)
////            }
////        }
////        return flag
////    }
//
//    /**
//     * 检查权限后的回调
//     * @param requestCode 请求码
//     * @param permissions  权限
//     * @param grantResults 结果
//     */
//    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
//        when (requestCode) {
//            REQUEST_CALL_PERMISSION -> {
//                if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//                    // 授权成功，继续打电话
//                    callPhone(this.phoneNumber)
//                } else {
//                    toast("授权失败")
//                }
//            }
//        }
//    }
//
//
//    companion object {
//        const val REQUEST_CALL_PERMISSION = 10111
//    }
}